Delphi 8 a VCL.NET
Otázka od: Zbysek Hlinka
8. 1. 2004 21:47
Ahoj,
tak jsem pro ciste svedomi udelal zbezny test chovani peogramu
napsanych v D8. Zde jsou prvni vysledky:
Nejdrive VCL.NET
Proti tomu, co bylo predstaveno v D7, je zde preci jen rozdil.
Testoval jsem spolupraci s moduly napsanymi v C# - zda je mozne dedit
tridy mezi sebou. Vyrobil jsem dll s VCL, nechal jsem podedit
vzajemne mezi C# a D8, a chodilo to. Na strane predka jsem zalozil
library, na strane potomka byl exac se zvlastni tridou (na obe
strany). Pro ilustraci:
C# kod, predek, library:
using System;
using System.Windows.Forms;
namespace PokusLib
{
public class Pokus
{
public string Kuku()
{
return "Kukuc";
}
}
}
----------------------------
Dedeni v D8, exac:
unit Class3;
interface
uses
PokusLib;
type
TClass3 = class(Pokus)
private
public
constructor Create;
end;
implementation
constructor TClass3.Create;
begin
inherited Create;
end;
end.
---------------------
Zkousel jsem to i obracene, a v teto trivialni podobe to fungovalo na
obe strany. Timto se tedy Borlandu omlouvam za neduveru, kterou jsem
porojevoval drive. Funguje to lepe, nez jsem puvodne ocekaval. Myslim
tedy, ze v podstate je mozne VCL.NET pouzit jako prechod k cistemu
.NET, aspon na teto urovni.
JENZE
Zkousel jsem i dalsi veci, a to napriklad dedeni formularu. Zalozil
jsem si C# assembly (tedy dll library) a v ni formular. Dale jsem
zalozil WinForms aplikaci v D8 (tedy .NET exac), a zkusil podedit
formular z C#. Pri vizualnim navrhu se mi potomek zobrazil, avsak
nesel prelozit. Pokud mate nekdo moznost toto vyzkouset, zajimal by
me vysledek.
V C# mam nejakou takovouto tridu:
namespace PokusLib
...
public class FormTest : System.Windows.Forms.Form
V D8 jsem to pak dedil takto:
uses
..., PokusLib;
...
TWinForm = class(FormTest)
Ne ze by se jednalo o fatalni nedostatek, ktery by cinil D8
nepouzitelnym, ale pokud je to skutecne chyba Delphi a ne moje, pak
to v poradku neni.
Dalsi VYHRADY k D8
Pokud zakladam library, nacpe se tam automaticky VCL. Tohle povazuju
za systemovou chybu, melo by to byt obracene - standardne .NET
library, a na vyzadani VCL. A to proto, ze VCL je navrzeno HURE nez
.NET. D8 by melo programatory prioritne vest k cilovemu psani cistych
.NET aplikaci, a ne VCL hybridu. Pokud se rozhodnete jit do .NET, pak
jedine tak, ze v cilovem stavu budete mit cistou .NET aplikaci, bez
VCL (nevidim zadny duvod to tahat nekolik dalsich verzi s sebou).
Proti VS v D8 POSTRADAM DataSet navrhar. Jestli tam je, nenasel jsem
ho. Kdo nezna VS - jedna se o XML strukturu datoveho modelu, ktery je
mozne pouzit jak pro nacitani dat z DB, tak i pro ukladani dat do
nejakeho XML nebo cokoliv dalsiho datoveho, a generuje to zdojovy kod
pro pristup ke strukture. Lze to v podstate pouzit ajko off-line
databazi. Zkratka je to vec, bez ktere si uz neumim predstavit svuj
programatorsky zivot. Jestlize to v D8 skutecne neni, pak pro
sebe nevidim duvod ho pouzivat.
Tot prozatim vse.
S pozdravem
Zbysek Hlinka
E-mail: hlinka zavin. hlinka.cz
Phone: +420 603 551 282